#include <bits/stdc++.h>
#include <iostream>
using namespace std;
int main()
{
    int number, n, i, j, lname, index = 0;
    char temp[50], name[21], sex, str[301];
    double score[5];
    cin >> n;
    cin.get(); // 读取多余的换行符
    while (n != 0)
    {
        FILE *fp = fopen("student.txt", "w+");
        if (fp == NULL)
        {
            cout << "打开文件失败!";
            exit(1); // 异常退出
        }

        // 写入文件
        for (j = 0; j < n; j++)
        {
            // 20140101 Li Ming M 85.00 90.00 92.00
            cin.getline(str, 301); // 读取整行字符
            for (i = 0; i <= 299; i++)
            {
                if ((str[i] == 'M' || str[i] == 'F') && (str[i + 2] >= '0' && str[i + 2] <= '9'))
                {
                    index = i; // 获取性别字符所在索引
                }
            }
            strncpy(temp, str, 8);
            temp[8] = '\0';
            number = atol(temp);           // 获取学号
            lname = index - 2 - 8;         // 获取姓名长度
            strncpy(name, str + 9, lname); // 获取姓名
            name[lname] = '\0';
            strncpy(&sex, str + index, 1); // 获取性别
            strncpy(temp, str + index + 2, 5);
            temp[5] = '\0';
            score[0] = atof(temp); // 获取第1科成绩
            strncpy(temp, str + index + 2 + 6, 5);
            temp[5] = '\0';
            score[1] = atof(temp); // 获取第2科成绩
            strncpy(temp, str + index + 2 + 6 + 6, 5);
            temp[5] = '\0';
            score[2] = atof(temp);                           // 获取第3科成绩
            score[3] = (score[0] + score[1] + score[2]) / 3; // 平均成绩
            score[4] = score[0] + score[1] + score[2];       // 总成绩

            // 写入文件，文件存：学号 姓名长度 姓名 性别 各门课程成绩 平均成绩 总成绩
            fprintf(fp, "%d %d %s %c %.2lf %.2lf %.2lf %.2lf %.2lf\n", 
            number, lname, name, sex, 
            score[0], score[1], score[2], score[3], score[4]);
        }

        // 读取文件
        // 先重新定位文件指针到文件开头
        fseek(fp, 0, SEEK_SET);
        cout << "当前文件内容为: " << endl;
        while (fgets(str, sizeof(str), fp) != NULL)
        {
            cout << str;
        }
        fclose(fp); // 关闭文件
        cin >> n;   // 输入下一组字符串行数
        cin.get();  // 读取多余的换行符
    }

    return 0;
}
/*
5
20140201 Zhao Li F 80.00 80.00 80.00
20140202 Lu Yao M 89.40 86.50 88.00
20140203 Qiao En M 72.50 85.60 78.50
20140204 Tian Ya M 88.50 68.60 94.00
20140205 Li Hua M 90.00 90.00 90.00
*/
